gsk: Fix build on Visual Studio
authorChun-wei Fan <fanchunwei@src.gnome.org>
Wed, 28 Dec 2016 14:37:01 +0000 (22:37 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Thu, 29 Dec 2016 09:52:52 +0000 (17:52 +0800)
One cannot use #if...#endif within macro calls in Visual Studio and
possibly other compilers, and there are more uses of VLAs that need to be
replaced with g_newa().

There were also checks for the clip type in gskvulkanrenderpass.c which
were possibly not done right (using the address of the type value to check
for a type value), which triggered errors as one is attempting to compare
a pointer type to an enum/int type.

https://bugzilla.gnome.org/show_bug.cgi?id=773299

gsk/gskvulkancommandpool.c
gsk/gskvulkanrender.c
gsk/gskvulkanrenderpass.c

index 09dd333ad5f312f7f6d73316436184d7970c18fc..c2b974715a1dc07a3fc86bdcf24a1470b6fc93df 100644 (file)
@@ -83,12 +83,12 @@ gsk_vulkan_command_pool_submit_buffer (GskVulkanCommandPool *self,
                                1,
                                &(VkSubmitInfo) {
                                   .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
-#if 0
+/*
                                   .waitSemaphoreCount = 1,
                                   .pWaitSemaphores = (VkSemaphore[1]) {
                                       gdk_vulkan_context_get_draw_semaphore (self->vulkan)
                                   },
-#endif
+*/
                                   .pWaitDstStageMask = (VkPipelineStageFlags []) {
                                       VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
                                   },
@@ -96,12 +96,12 @@ gsk_vulkan_command_pool_submit_buffer (GskVulkanCommandPool *self,
                                   .pCommandBuffers = (VkCommandBuffer[1]) {
                                       command_buffer
                                   },
-#if 0
+/*
                                   .signalSemaphoreCount = 1,
                                   .pSignalSemaphores = (VkSemaphore[1]) {
                                       gdk_vulkan_context_get_draw_semaphore (self->vulkan)
                                   }
-#endif
+*/
                                },
                                fence);
 }
index 12dac4d73f109ebfc362ddf334258abd517f6bcd..80b9418373b9777110762fae1a194967fa1709c2 100644 (file)
@@ -414,7 +414,7 @@ gsk_vulkan_render_prepare_descriptor_sets (GskVulkanRender *self,
       self->n_descriptor_sets = needed_sets;
       self->descriptor_sets = g_renew (VkDescriptorSet, self->descriptor_sets, needed_sets);
 
-      VkDescriptorSetLayout layouts[needed_sets];
+      VkDescriptorSetLayout *layouts = g_newa (VkDescriptorSetLayout, needed_sets);
       for (i = 0; i < needed_sets; i++)
         {
           layouts[i] = gsk_vulkan_pipeline_layout_get_descriptor_set_layout (self->layout);
index 44bc7f9052cb07427d3f34234c31745cf534450e..38947ba6bc028e875fd88765931312ce81caf55c 100644 (file)
@@ -199,7 +199,7 @@ gsk_vulkan_render_pass_add_node (GskVulkanRenderPass           *self,
       {
         if (!gsk_vulkan_push_constants_intersect_rect (&op.constants.constants, constants, gsk_clip_node_peek_clip (node)))
           FALLBACK ("Failed to find intersection between clip of type %u and rectangle\n", constants->clip.type);
-        if (&op.constants.constants.clip.type == GSK_VULKAN_CLIP_ALL_CLIPPED)
+        if (op.constants.constants.clip.type == GSK_VULKAN_CLIP_ALL_CLIPPED)
           return;
 
         op.type = GSK_VULKAN_OP_PUSH_VERTEX_CONSTANTS;
@@ -218,7 +218,7 @@ gsk_vulkan_render_pass_add_node (GskVulkanRenderPass           *self,
                                                           constants,
                                                           gsk_rounded_clip_node_peek_clip (node)))
           FALLBACK ("Failed to find intersection between clip of type %u and rounded rectangle\n", constants->clip.type);
-        if (&op.constants.constants.clip.type == GSK_VULKAN_CLIP_ALL_CLIPPED)
+        if (op.constants.constants.clip.type == GSK_VULKAN_CLIP_ALL_CLIPPED)
           return;
 
         op.type = GSK_VULKAN_OP_PUSH_VERTEX_CONSTANTS;